package exception;

/**
 * 异常处理机制中的try-catch
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        try {   //try中的代码不出现异常时，catch不会执行
//            String line = null;
//            String line = "a";
//            String line = "abc";
            String line = "123";

            System.out.println(line.length());
            System.out.println(line.charAt(1));
            System.out.println(Integer.parseInt(line));
            //try中代码报错后，下面的内容都不在执行，而是跳转到catch
            System.out.println("!!!!!!!!!!!!!!!!!!!!!!!");
        }
//        catch (NullPointerException e){
//            System.out.println("出现了空指针异常，并解决了！");
//
//        }catch (StringIndexOutOfBoundsException e){   //catch 可以定义多个，针对不同异常有不同处理方式时，可以分别捕获
//            System.out.println("出现了字符串下标越界，并解决了！");
//        }
        catch (NullPointerException|StringIndexOutOfBoundsException e){
            System.out.println("出现了空指针或下标异常，并解决了！");
        }
        catch (Exception e){  //捕获超类异常(所有它的子类异常都可以被其处理）
            System.out.println("反正就是出了个错！");
        }
        System.out.println("程序结束了");
    }
}
